﻿Imports System.Data.SqlClient

Public Class OfertaDAO

    Function buscar(ByVal modelo As Restaurante) As Collection

        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "Select Oferta.descripcion, Oferta.fecha_inicio, Oferta.fecha_fin from Oferta, Restaurante where Oferta.Restaurante_idrestaurant = Restaurante.idrestaurant and Restaurante.nombre like @VALOR1"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", "%" + modelo.nombre + "%")

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            While dr.Read
                Dim modelx As New Oferta
                modelx.descripcion = dr(0).ToString
                modelx.fecha_inicio = dr(1).ToString
                modelx.fecha_fin = dr(2).ToString
                lista.Add(modelx)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista


    End Function

    Function buscarxnombre(ByVal ofer As todo) As Collection

        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "Select Oferta.idOferta, Oferta.descripcion, Oferta.fecha_inicio, Oferta.fecha_fin from Oferta, Restaurante where Oferta.Restaurante_idrestaurant = Restaurante.idrestaurant and Restaurante.nombre like @VALOR1 and Oferta.descripcion like @VALOR2 and Oferta.fecha_inicio like @VALOR3 and Oferta.fecha_fin like @VALOR4"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", "%" + ofer.nombre + "%")
            cmd.Parameters.AddWithValue("@VALOR2", "%" + ofer.descripcion + "%")
            cmd.Parameters.AddWithValue("@VALOR3", "%" + ofer.fecha_inicio + "%")
            cmd.Parameters.AddWithValue("@VALOR4", "%" + ofer.fecha_fin + "%")

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            While dr.Read

                ofer.idOferta = dr(0).ToString()
                ofer.descripcion = dr(1).ToString
                ofer.fecha_inicio = dr(2).ToString
                ofer.fecha_fin = dr(3).ToString
                lista.Add(ofer)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista


    End Function

    Public Sub eliminar(ByVal idrestaurant As Integer)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "DELETE FROM oferta WHERE idOferta=@VALOR1"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", idrestaurant)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("CategoriaDAO: No eliminó")
            End If

            cn.Close()

        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try
    End Sub

    Public Sub actualizar(ByVal modelo As Oferta)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "UPDATE oferta SET descripcion=@VALOR1, fecha_inicio=@VALOR2, fecha_fin=@VALOR3 WHERE idOferta=@VALOR4"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", modelo.descripcion)
            cmd.Parameters.AddWithValue("@VALOR2", modelo.fecha_inicio)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.fecha_fin)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.idOferta)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("CategoriaDAO: No actualizó")
            End If

            cn.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
            Throw New DAOExcepcion(ex.ToString)
        End Try
    End Sub

    Public Function insertar(ByVal modelo As Oferta) As Oferta

        Dim rests As New Restaurante

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "INSERT INTO Oferta (Restaurante_idrestaurant, fecha_inicio, fecha_fin, descripcion) VALUES (@VALOR1, @VALOR2, @VALOR3, @VALOR4)"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", rests.idrestaurant)
            cmd.Parameters.AddWithValue("@VALOR2", modelo.fecha_inicio)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.fecha_fin)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.descripcion)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("CategoriaDAO: No insertó")
            End If

            ' LEER EL ULTIMO ID
            sql = "SELECT @@IDENTITY"
            cmd = New SqlCommand(sql, cn)
            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idOferta = CType(dr(0), Integer)
            End If

            dr.Close()
            cn.Close()

        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo

    End Function

    Public Function obtener(ByVal idCategoria As Integer) As Oferta
        Dim modelo As New Oferta

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT * from oferta WHERE idOferta=@VALOR1"
            Dim cmd As New SqlCommand(sql, cn)

            cmd.Parameters.AddWithValue("@VALOR1", idCategoria)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idOferta = dr(0).ToString
                modelo.Restaurante_idestaurant = dr(1).ToString
                modelo.fecha_inicio = dr(2).ToString
                modelo.fecha_fin = dr(3).ToString
                modelo.descripcion = dr(4).ToString

            End If

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo
    End Function

    Public Function obtener2(ByVal nombre As todo) As todo
        Dim modelo As New todo

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT * from restaurante WHERE nombre like @VALOR1"
            Dim cmd As New SqlCommand(sql, cn)

            cmd.Parameters.AddWithValue("@VALOR1", "%" + nombre.nombre + "%")

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idrestaurant = dr(0).ToString
                modelo.nombre = dr(1).ToString
                modelo.tipo_comida = dr(2).ToString
                modelo.distrito = dr(3).ToString
                modelo.direccion = dr(4).ToString
                modelo.ruc = dr(5).ToString
            End If

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo
    End Function

End Class
